﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Collections;
using WebService_Newstore.DAO;
using WebService_Newstore.DTO;

namespace WebService_Newstore.Controller
{
    public class UserController
    {
        /// <summary>
        /// Méthode pour établir la connexion avec la base de données, renvoie l'userDTO au client WPF
        /// </summary>
        /// <param name="login">string, le login du user</param>
        /// <param name="mdp">string, le mot de passe du user</param>
        /// <returns>UserDTO rempli si login + mdp ok; UserDTO vide si login + mdp ko</returns>
        public static UserDTO ConnectUser(string login, string mdp)
        {
            UserDAO userDAO = new UserDAO(login,mdp);
            UserDTO userDTO = new UserDTO();

            //Si erreur, on retourne un userDTO vide
            if (userDAO.idUserDAO == 0 && userDAO.nomUserDAO == string.Empty)
                return userDTO;
            else
                //on récupère les confidentialités associées et on instancie le userDTO utilisé pour la suite
                userDTO.idUserDTO = userDAO.idUserDAO;
                userDTO.nomUserDTO = userDAO.nomUserDAO;
                userDTO.preUserDTO = userDAO.preUserDAO;
                userDTO.loginUserDTO = userDAO.loginUserDAO;
                userDTO.mdpUserDTO = userDAO.mdpUserDAO;
                userDTO.confUser = UserConfDAO.FindConfByUserID(userDAO.idUserDAO);
                return userDTO;
        }

        /// <summary>
        /// Renvoie un userDTO correspondant à l'id
        /// </summary>
        /// <param name="id">int, l'id du user</param>
        /// <returns>UserDTO rempli si id ok; Exception  si id ko</returns>
        public UserDTO FindUserByID(int id)
        {
            UserDAO userDAO = new UserDAO(id);
            UserDTO userDTO = new UserDTO();

            //Controle de l'instanciation du UserDAO
            if (userDAO.idUserDAO == 0 && userDAO.nomUserDAO == null)
                throw new Exception("Aucun user ne correspond !!");
            else
            {
                //Il faut récupérer les confidentialités associées !
                userDTO.idUserDTO = userDAO.idUserDAO;
                userDTO.nomUserDTO = userDAO.nomUserDAO;
                userDTO.preUserDTO = userDAO.preUserDAO;
                userDTO.loginUserDTO = userDAO.loginUserDAO;
                userDTO.mdpUserDTO = userDAO.mdpUserDAO;
                userDTO.confUser = UserConfDAO.FindConfByUserID(id);
                return userDTO;
            }
        }

        public static ParametreDTO chargeParam()
        {
            try
            {
                ParametreDAO paramDAO = new ParametreDAO();
                ParametreDTO paramDTO = new ParametreDTO();

                paramDTO.id_paramDTO = paramDAO.id_param;
                paramDTO.id_confAdminBPDTO = paramDAO.id_confAdminBP;
                paramDTO.id_confCmdDTO = paramDAO.id_confCmd;
                paramDTO.id_confRecepDTO = paramDAO.id_confRecep;
                return paramDTO;
            }
            catch (Exception e)
            {
                throw new Exception("Problème lors de la récupération de la table paramètre : " + e.Message);
            }
        }
    }
}